停止保護を有効にしているEC2インスタンスがAuto Scalingでスケールインすると、保護を無視して削除される
コンサル部のとばち(@toda_kk)です。
2022年5月のアップデートにより、EC2インスタンスの「停止保護」の機能が追加されました。
従来の「削除保護」に加えて、「停止」の動作に対しても保護機能が追加されたことになります。
そこでふと疑問に思いました。
Auto Scalingを利用している場合、「停止保護」を有効にしているEC2インスタンスがスケールインしようとすると、どういう動作になるんでしょうか?
ドキュメントに答えがあった
疑問をそのままTwitterに呟いていたら、同僚から教えてもらいました。
削除保護と一緒でAuto Scallingの場合は無視して削除するみたい
> Enabling stop protection does not prevent Auto Scaling from terminating an instance when the instance is unhealthy or during scale-in events.https://t.co/fkYGupnryQ
— のんピ / non-97 / ブログ狂中年卍 (@non____97) May 24, 2022
どうやら、公式ドキュメントにそのまま記載があったようです。
結論としては、本記事のタイトルにある通り、Auto ScalingによってEC2インスタンスがスケールインされると停止保護の機能を無視してインスタンスが削除されます。
これは従来の「削除保護」の場合と同じ挙動になります。
実際に試してみた
ドキュメントの記載だけでは安心できないぜ! という方のために、実際に試して挙動を確認してみました。
動作確認の手順は下記の通りです。
- EC2インスタンスの停止保護を有効にした起動テンプレートを作成する
- 作成した起動テンプレートを利用したEC2 Auto Scalingグループを作成する
- Auto Scalingグループの台数を変更してスケールインさせてみる
まず、停止保護を有効にした起動テンプレートを作成します。
マネジメントコンソールから作成する際は、「高度な詳細」に該当の項目があります。
ちなみに、スポットインスタンスをリクエストすると停止保護を有効にできないのでご注意ください。
起動テンプレートを作成したら、続いてAuto Scalingグループを作成します。
後ほどスケールインさせたいので、この段階で「希望する容量」「最小容量」「最大容量」を「2」で指定して、EC2インスタンスが2台起動するようにしておきます。
Auto Scalingグループが無事に作成されたら、EC2インスタンスが2台起動します。
さて、いよいよスケールインを実行します。「グループの詳細」を編集して、「希望する容量」「最小容量」「最大容量」を「0」で指定します。
すると、起動していたEC2インスタンスのライフサイクルが「Terminating」となります。しばらくすると、インスタンスが停止し、削除されます。
公式ドキュメントの通り、停止保護を有効にしていてもAuto Scalingによるスケールインの動作には影響がない、ということが確認できました。
EC2の「削除保護」「停止保護」はどちらもAuto Scalingには影響しない
従来の「削除保護」も同様に、Auto Scalingによるスケールインの動作には影響しない仕様となっています。
Auto Scalingによるスケールインから保護するためには、Auto Scalingグループの設定からスケールイン保護を有効にしたり、終了ポリシー(Terminating Policy)を指定する必要がありますので、ご注意ください。
以上、コンサル部のとばち(@toda_kk)でした。